package transitarios;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import transitarios.api.IGestaoCondutores;
import transitarios.entidades.Condutor;

public class GestaoCondutores implements IGestaoCondutores, Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Map<String, Condutor> condutores;

	public GestaoCondutores() {
		this.condutores = new TreeMap<String, Condutor>();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see transitario.IGestaoCondutores#removeCondutor(java.lang.String)
	 */

	public GestaoCondutores(Map<String, Condutor> condutores) {

		this.condutores = condutores;
	}

	@Override
	public void adiciona(Condutor entidade) {
		this.condutores.put(entidade.getCodigo(), entidade);

	}

	@Override
	public int contagem() {

		return this.condutores.size();
	}

	@Override
	public Condutor devolve(String codigo) {
		return this.condutores.get(codigo);
	}

	@Override
	public List<Condutor> devolveTodos() {

		return new ArrayList<Condutor>(this.condutores.values());
	}

	@Override
	public boolean existe(Condutor p) {

		return (this.condutores.get(p.getCodigo()) == null ? false : true);
	}

	@Override
	public boolean existe(String codigo) {
		return (this.condutores.get(codigo) == null ? false : true);
	}

	/**
	 * @return the gestaoCondutores
	 */
	// @Override
	protected Map<String, Condutor> getCondutores() {
		return this.condutores;
	}

	@Override
	public void remove(Condutor entidade) {

		this.condutores.remove(entidade.getCodigo());

	}

	@Override
	public void remove(String codigo) {
		this.condutores.remove(codigo);

	}

	/**
	 * @param condutores
	 *            the gestaoCondutores to set
	 */
	// @Override
	protected void setCondutores(Map<String, Condutor> condutores) {
		this.condutores = condutores;
	}

}
